package thread;

/**
 * 使用当前类型演示多线程并发安全问题
 */
public class Bank {
    private int account=20000;
    //取钱方法
    public synchronized boolean getMoney(int money){
        //查询余额
        int account =getAccount();
        //判断余额是否充足
        if (account>=money){
            //计算新余额
            account=account-money;
            Thread.yield();//主动要求放弃时间片（模拟CPU执行到这里没有时间了）
            //保存新余额
            saveAccount(account);
            return true;
        }
        //余额不足。拒绝出钞
        return false;
    }
    //重新记账
    public void saveAccount(int account){
        this.account=account;
    }
    //查询余额
    public int getAccount(){
        return account;
    }
}
